#include "config.h"

#include <iostream>
#include <string>
#include <pybind11/pybind11.h>
#include <autocxxpy/autocxxpy.hpp>

#include "module.hpp"
#include "wrappers.hpp"
#include "generated_functions.h"

#include "xtp_trader_api.h"
#include "xtp_quote_api.h"


void generate_caster_(pybind11::object & parent)
{
    struct caster: autocxxpy::caster{};
    auto c = autocxxpy::caster::bind<caster>(parent, "caster"); 
    autocxxpy::caster::try_generate<XTPRspInfoStruct>(c, "toXTPRspInfoStruct)");
    autocxxpy::caster::try_generate<XTPSpecificTickerStruct>(c, "toXTPSpecificTickerStruct)");
    autocxxpy::caster::try_generate<XTPMarketDataStockExData>(c, "toXTPMarketDataStockExData)");
    autocxxpy::caster::try_generate<XTPMarketDataOptionExData>(c, "toXTPMarketDataOptionExData)");
    autocxxpy::caster::try_generate<XTPMarketDataStruct>(c, "toXTPMarketDataStruct)");
    autocxxpy::caster::try_generate<XTPQuoteStaticInfo>(c, "toXTPQuoteStaticInfo)");
    autocxxpy::caster::try_generate<OrderBookStruct>(c, "toOrderBookStruct)");
    autocxxpy::caster::try_generate<XTPTickByTickEntrust>(c, "toXTPTickByTickEntrust)");
    autocxxpy::caster::try_generate<XTPTickByTickTrade>(c, "toXTPTickByTickTrade)");
    autocxxpy::caster::try_generate<XTPTickByTickStruct>(c, "toXTPTickByTickStruct)");
    autocxxpy::caster::try_generate<XTPTickerPriceInfo>(c, "toXTPTickerPriceInfo)");
    autocxxpy::caster::try_generate<XTPOrderInsertInfo>(c, "toXTPOrderInsertInfo)");
    autocxxpy::caster::try_generate<XTPOrderCancelInfo>(c, "toXTPOrderCancelInfo)");
    autocxxpy::caster::try_generate<XTPOrderInfo>(c, "toXTPOrderInfo)");
    autocxxpy::caster::try_generate<XTPTradeReport>(c, "toXTPTradeReport)");
    autocxxpy::caster::try_generate<XTPQueryOrderReq>(c, "toXTPQueryOrderReq)");
    autocxxpy::caster::try_generate<XTPQueryReportByExecIdReq>(c, "toXTPQueryReportByExecIdReq)");
    autocxxpy::caster::try_generate<XTPQueryTraderReq>(c, "toXTPQueryTraderReq)");
    autocxxpy::caster::try_generate<XTPQueryAssetRsp>(c, "toXTPQueryAssetRsp)");
    autocxxpy::caster::try_generate<XTPQueryStkPositionRsp>(c, "toXTPQueryStkPositionRsp)");
    autocxxpy::caster::try_generate<XTPFundTransferNotice>(c, "toXTPFundTransferNotice)");
    autocxxpy::caster::try_generate<XTPQueryFundTransferLogReq>(c, "toXTPQueryFundTransferLogReq)");
    autocxxpy::caster::try_generate<XTPQueryStructuredFundInfoReq>(c, "toXTPQueryStructuredFundInfoReq)");
    autocxxpy::caster::try_generate<XTPStructuredFundInfo>(c, "toXTPStructuredFundInfo)");
    autocxxpy::caster::try_generate<XTPQueryETFBaseReq>(c, "toXTPQueryETFBaseReq)");
    autocxxpy::caster::try_generate<XTPQueryETFBaseRsp>(c, "toXTPQueryETFBaseRsp)");
    autocxxpy::caster::try_generate<XTPQueryETFComponentReq>(c, "toXTPQueryETFComponentReq)");
    autocxxpy::caster::try_generate<XTPQueryETFComponentRsp>(c, "toXTPQueryETFComponentRsp)");
    autocxxpy::caster::try_generate<XTPQueryIPOTickerRsp>(c, "toXTPQueryIPOTickerRsp)");
    autocxxpy::caster::try_generate<XTPQueryIPOQuotaRsp>(c, "toXTPQueryIPOQuotaRsp)");
    autocxxpy::caster::try_generate<XTPQueryOptionAuctionInfoReq>(c, "toXTPQueryOptionAuctionInfoReq)");
    autocxxpy::caster::try_generate<XTPQueryOptionAuctionInfoRsp>(c, "toXTPQueryOptionAuctionInfoRsp)");
    autocxxpy::caster::try_generate<XTPCrdCashRepayRsp>(c, "toXTPCrdCashRepayRsp)");
    autocxxpy::caster::try_generate<XTPCrdCashRepayDebtInterestFeeRsp>(c, "toXTPCrdCashRepayDebtInterestFeeRsp)");
    autocxxpy::caster::try_generate<XTPCrdCashRepayInfo>(c, "toXTPCrdCashRepayInfo)");
    autocxxpy::caster::try_generate<XTPCrdDebtInfo>(c, "toXTPCrdDebtInfo)");
    autocxxpy::caster::try_generate<XTPCrdFundInfo>(c, "toXTPCrdFundInfo)");
    autocxxpy::caster::try_generate<XTPClientQueryCrdDebtStockReq>(c, "toXTPClientQueryCrdDebtStockReq)");
    autocxxpy::caster::try_generate<XTPCrdDebtStockInfo>(c, "toXTPCrdDebtStockInfo)");
    autocxxpy::caster::try_generate<XTPClientQueryCrdPositionStockReq>(c, "toXTPClientQueryCrdPositionStockReq)");
    autocxxpy::caster::try_generate<XTPClientQueryCrdPositionStkInfo>(c, "toXTPClientQueryCrdPositionStkInfo)");
    autocxxpy::caster::try_generate<XTPClientQueryCrdSurplusStkReqInfo>(c, "toXTPClientQueryCrdSurplusStkReqInfo)");
    autocxxpy::caster::try_generate<XTPClientQueryCrdSurplusStkRspInfo>(c, "toXTPClientQueryCrdSurplusStkRspInfo)");
    autocxxpy::caster::try_generate<XTPClientCrdExtendDebtInfo>(c, "toXTPClientCrdExtendDebtInfo)");
    autocxxpy::caster::try_generate<XTPFundTransferReq>(c, "toXTPFundTransferReq)");
    autocxxpy::caster::try_generate<XTPVersionType>(c, "toXTPVersionType)");
    autocxxpy::caster::try_generate<XTP_LOG_LEVEL>(c, "toXTP_LOG_LEVEL)");
    autocxxpy::caster::try_generate<XTP_PROTOCOL_TYPE>(c, "toXTP_PROTOCOL_TYPE)");
    autocxxpy::caster::try_generate<XTP_EXCHANGE_TYPE>(c, "toXTP_EXCHANGE_TYPE)");
    autocxxpy::caster::try_generate<XTP_MARKET_TYPE>(c, "toXTP_MARKET_TYPE)");
    autocxxpy::caster::try_generate<XTP_PRICE_TYPE>(c, "toXTP_PRICE_TYPE)");
    autocxxpy::caster::try_generate<XTP_SIDE_TYPE>(c, "toXTP_SIDE_TYPE)");
    autocxxpy::caster::try_generate<XTP_POSITION_EFFECT_TYPE>(c, "toXTP_POSITION_EFFECT_TYPE)");
    autocxxpy::caster::try_generate<XTP_ORDER_ACTION_STATUS_TYPE>(c, "toXTP_ORDER_ACTION_STATUS_TYPE)");
    autocxxpy::caster::try_generate<XTP_ORDER_STATUS_TYPE>(c, "toXTP_ORDER_STATUS_TYPE)");
    autocxxpy::caster::try_generate<XTP_ORDER_SUBMIT_STATUS_TYPE>(c, "toXTP_ORDER_SUBMIT_STATUS_TYPE)");
    autocxxpy::caster::try_generate<XTP_TE_RESUME_TYPE>(c, "toXTP_TE_RESUME_TYPE)");
    autocxxpy::caster::try_generate<ETF_REPLACE_TYPE>(c, "toETF_REPLACE_TYPE)");
    autocxxpy::caster::try_generate<XTP_TICKER_TYPE>(c, "toXTP_TICKER_TYPE)");
    autocxxpy::caster::try_generate<XTP_BUSINESS_TYPE>(c, "toXTP_BUSINESS_TYPE)");
    autocxxpy::caster::try_generate<XTP_ACCOUNT_TYPE>(c, "toXTP_ACCOUNT_TYPE)");
    autocxxpy::caster::try_generate<XTP_FUND_TRANSFER_TYPE>(c, "toXTP_FUND_TRANSFER_TYPE)");
    autocxxpy::caster::try_generate<XTP_FUND_OPER_STATUS>(c, "toXTP_FUND_OPER_STATUS)");
    autocxxpy::caster::try_generate<XTP_SPLIT_MERGE_STATUS>(c, "toXTP_SPLIT_MERGE_STATUS)");
    autocxxpy::caster::try_generate<XTP_TBT_TYPE>(c, "toXTP_TBT_TYPE)");
    autocxxpy::caster::try_generate<XTP_OPT_CALL_OR_PUT_TYPE>(c, "toXTP_OPT_CALL_OR_PUT_TYPE)");
    autocxxpy::caster::try_generate<XTP_OPT_EXERCISE_TYPE_TYPE>(c, "toXTP_OPT_EXERCISE_TYPE_TYPE)");
    autocxxpy::caster::try_generate<XTP_POSITION_DIRECTION_TYPE>(c, "toXTP_POSITION_DIRECTION_TYPE)");
    autocxxpy::caster::try_generate<XTP_CRD_CR_STATUS>(c, "toXTP_CRD_CR_STATUS)");
    autocxxpy::caster::try_generate<TXTPTradeTypeType>(c, "toTXTPTradeTypeType)");
    autocxxpy::caster::try_generate<TXTPOrderTypeType>(c, "toTXTPOrderTypeType)");
    autocxxpy::caster::try_generate<XTPRI>(c, "toXTPRI)");
    autocxxpy::caster::try_generate<XTPST>(c, "toXTPST)");
    autocxxpy::caster::try_generate<XTPMD>(c, "toXTPMD)");
    autocxxpy::caster::try_generate<XTPQSI>(c, "toXTPQSI)");
    autocxxpy::caster::try_generate<XTPOB>(c, "toXTPOB)");
    autocxxpy::caster::try_generate<XTPTBT>(c, "toXTPTBT)");
    autocxxpy::caster::try_generate<XTPTPI>(c, "toXTPTPI)");
    autocxxpy::caster::try_generate<XTPQueryOrderRsp>(c, "toXTPQueryOrderRsp)");
    autocxxpy::caster::try_generate<XTPQueryTradeRsp>(c, "toXTPQueryTradeRsp)");
    autocxxpy::caster::try_generate<XTPFundTransferLog>(c, "toXTPFundTransferLog)");
    autocxxpy::caster::try_generate<XTPQueryETFBaseRsp>(c, "toXTPQueryETFBaseRsp)");
    autocxxpy::caster::try_generate<XTPQueryETFComponentReq>(c, "toXTPQueryETFComponentReq)");
    autocxxpy::caster::try_generate<XTPCrdDebtInfo>(c, "toXTPCrdDebtInfo)");
    autocxxpy::caster::try_generate<XTPCrdFundInfo>(c, "toXTPCrdFundInfo)");
    autocxxpy::caster::try_generate<XTPClientQueryCrdDebtStockReq>(c, "toXTPClientQueryCrdDebtStockReq)");
    autocxxpy::caster::try_generate<XTPCrdDebtStockInfo>(c, "toXTPCrdDebtStockInfo)");
    autocxxpy::caster::try_generate<XTPClientQueryCrdPositionStockReq>(c, "toXTPClientQueryCrdPositionStockReq)");
    autocxxpy::caster::try_generate<XTPClientQueryCrdPositionStkInfo>(c, "toXTPClientQueryCrdPositionStkInfo)");
    autocxxpy::caster::try_generate<XTPClientQueryCrdSurplusStkReqInfo>(c, "toXTPClientQueryCrdSurplusStkReqInfo)");
    autocxxpy::caster::try_generate<XTPClientQueryCrdSurplusStkRspInfo>(c, "toXTPClientQueryCrdSurplusStkRspInfo)");
    autocxxpy::caster::try_generate<XTPClientCrdExtendDebtInfo>(c, "toXTPClientCrdExtendDebtInfo)");
    autocxxpy::caster::try_generate<XTPFundTransferAck>(c, "toXTPFundTransferAck)");
}
